package com.fowo.api.inventory.service;

import com.fowo.api.inventory.model.*;
import com.fowo.api.inventory.model.form.InventoryExchangeFormVo;
import com.fowo.api.inventory.model.form.InventoryOutboundFormVo;
import com.fowo.api.inventory.model.form.InventoryStorageFormVo;

public interface InventoryBusinessService {
    /**
     * 按表单入库
     * @param model
     * @return
     * @throws Exception
     */
    InventoryListReturnVo storage(InventoryStorageFormVo model) throws Exception;

    /**
     * 单次入库
     * @param model
     * @return
     * @throws Exception
     */
    InventoryListReturnVo storageItem(InventoryStorageVo model) throws Exception;

    /**
     * 按表单出库
     * @param model
     * @return
     * @throws Exception
     */
    InventoryListReturnVo outbound(InventoryOutboundFormVo model)  throws Exception;

    /**
     *  单次出库
     * @param model
     * @return
     * @throws Exception
     */
    InventoryListReturnVo outboundItem(InventoryOutboundVo model)  throws Exception;

    /**
     * 整单库存内流转
     * @param model 整单库存内流转参数模型
     * @return
     * @throws Exception
     */
    InventoryListReturnVo exchange(InventoryExchangeFormVo model) throws Exception;

    /**
     * 单次库存内流转
     * @param model
     * @return
     * @throws Exception
     */
    InventoryListReturnVo exchangeItem(InventoryExchangeVo model) throws Exception;

    /**
     * 使用当前即时库存与流水更新月报
     * @param model
     * @throws Exception
     */
    void updateMonthly(UpdateMonthlyVo model) throws Exception;
}
